(function () {

    var x;
    var textLength = null;
    var $froalaEl = null;

    function init() {

        // 初始化控件
        onControl();

        $froalaEl = $('#edit').find('.froala-element');
        $froalaEl.editableEvt();
        $froalaEl.on("change", function () {
            textLength = onGetTextLength(getSimpleText($('#edit').find('.froala-element').get(0).innerHTML));
            x.$view.find('.number font').text(textLength);
        });


        // 发送
        x.$view.find('.send').on("click", function () {
            onSave();
        });

        // 进入选择位置页面
        x.$view.find('.map .text').on("click", function () {
            $('.note-codable').blur();
            x.$view.find('.map_page').removeClass("right");
        });

        // 退出选择位置
        x.$view.find('.back').on("click", function () {
            x.$view.find('.map_page').addClass("right");
        });

        x.$view.find('.ul_map').on("click", '.item', function () {
            var $this = $(this);
            var address = $this.find('h4').text();
            x.$view.find('.map .text').text(address);
            x.$view.find('.map_page').addClass("right");
        });

        var backButton = x.view.element.find('.km-back').data('kendoMobileBackButton');
        backButton.bind("click", function (e) {
            e.preventDefault();
            if (textLength > 0 || x.$view.find(".title_text").val().trim() != "") {
                app.confirm("确定退出吗？", function (data) {
                    if (data == 1) {
                        app.returnUrl(-1);
                    } else {
                        return false;
                    }
                });
            } else {
                app.returnUrl(-1);
            }
        });

    }


    window.onHideWrite = function () {
        document.removeEventListener("backbutton", onBackMap, false);
    };

    window.onShowWrite = function () {
        document.addEventListener("backbutton", onBackMap, false);
    };

    // 按手机实体返回键时，判断是否进入选择位置页面
    function onBackMap() {
        var $right = x.$view.find('.map_page');
        if (!$right.hasClass('right')) {
            x.$view.find('.map_page').addClass("right");
        } else {
            if (textLength > 0 || x.$view.find(".title_text").val().trim() != "") {
                app.confirm("确定退出吗？", function (data) {
                    if (data == 1) {
                        app.returnUrl(-1);
                    } else {
                        return false;
                    }
                });
            } else {
                app.returnUrl(-1);
            }
        }
    }

    /**
     * 发布
     */
    function onSave() {
        // 标题
        var title = x.$view.find(".title_text").val();
        // 内容
        var content = $('#edit').find('.froala-element').get(0).innerHTML;
        // 用户信息
        var loginInfo = JSON.parse(localStorage.getItem("loginInfo"));
        // 位置
        var address = x.$view.find('.map .text').text();

        if (loginInfo == null) {
            app.logout();
            return;
        }
        if (textLength > 0 && title.length > 0) {
            var data = {
                title: title,
                content: content,
                userId: loginInfo.id,
                address: address
            };
            var btn = ["确定", "取消"];
            mui.confirm('确认发布?', '提示', btn, function (e) {
                if (e.index == 0) {
                    backService.wirte.onSaveContent(data, function (json) {
                        mui.toast(json.msg, app.toMain());
                    }, function (e) {
                        app.showToast(e.msg)
                    });
                }
            });
        } else {
            mui.toast("标题和正文都不能为空!");
        }
    }

    /**
     * 获取富文本文字长度
     * @param {Object} str
     */
    function onGetTextLength(str) {
        return str.replace(/[\u0391-\uFFE5]/g, "a").length; //先把中文替换成两个字节的英文，在计算长度
    }

    /**
     * 去除html中标签
     * @param {Object} html
     */
    function getSimpleText(html) {
        var re1 = new RegExp("<.+?>", "g"); //匹配html标签的正则表达式，"g"是搜索匹配多个符合的内容
        var re2 = new RegExp("&.+?;", "g");
        var msg = html.replace(re1, '').replace(re2, ''); //执行替换成空字符
        return msg;
    }

    /**
     * 控件初始化
     */
    function onControl() {
        $('#edit').editable({});
    }

    // 获取当前定位经纬度
    function getCurrentPosition() {
        // 定位数据获取成功响应
        var onSuccess = function (position) {

            var point = new BMap.Point(position.coords.longitude, position.coords.latitude);//纬度,经度
            onGetCurrPosSuccess(point)
        };

        //定位数据获取失败响应
        function onError(error) {
            app.showToast('error :\n' +
                'code: ' + error.code + '\n' +
                'message: ' + error.message + '\n');
        }

        var options = {
            enableHighAccuracy: true,  // 是否使用 GPS
            maximumAge: 30000,         // 缓存时间
            timeout: 7000,            // 超时时间
            coorType: 'bd09ll'         // 默认是 gcj02，可填 bd09ll 以获取百度经纬度用于访问百度 API
        };

        //开始获取定位数据
        navigator.geolocation.getCurrentPosition(onSuccess, onError, options);
    }

    /**
     * 根据经纬度获取定定位信息
     */
    function onGetCurrPosSuccess(point) {
        var gc = new BMap.Geocoder();
        var pt = point;

        var mOption = {
            poiRadius: 500,           //半径为500米内的POI,默认100米
            numPois: 30                //列举出30个POI,默认10个
        };

        gc.getLocation(pt, function (rs) {
            var addComp = rs.addressComponents;
            var surrPois = rs.surroundingPois;
            // console.log(surrPois);
            var $map = x.$view.find('.map');
            $map.find('.text').text(addComp.district + "," + addComp.street);
            /*console.log(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " +
                addComp.streetNumber);*/
            for (var i = 0; i < surrPois.length; i++) {
                var surrPoi = surrPois[i];
                var $li = $('<li class="item">' +
                    '<h4>' + surrPoi.title + '</h4>' +
                    '<p class="desc">' + surrPoi.Si + ':' + surrPoi.city + ',' + surrPoi.address + '</p>' +
                    '</li>');
                $li.appendTo(x.$view.find('.ul_map'));
            }
        }, mOption);
    }

    /**
     * 监听contenteditable编辑事件
     * @returns {_L8.$|*}
     */
    $.fn.editableEvt = function () {
        return this.each(function () {
            var $this = $(this);
            var htmlold = $this.html();
            $this.bind('blur keyup paste copy cut mouseup', function () {
                var htmlnew = $this.html();
                if (htmlold !== htmlnew) {
                    $this.trigger('change');
                }
            })
        })
    };

    window.onViewInit_wirte_index = function (view) {
        x = view.context;
        init();
    };

    window.onViewShow_wirte_index = function (view) {
        getCurrentPosition();
    };

})();